<template>
  <div class="new-login-page"
       ref="login"
       @keyup.enter.native="handleLogin">
    <top-color v-show="false"></top-color>
    <div class="left">
<!--      <div class="title">{{website.title}}</div>-->
    </div>
    <div class="right">
      <div class="login-main">
        <div class="logo-n-title">
          <img src="/img/logo-n-title.png"/>
        </div>
        <h4 class="login-title">
          {{ activeName === 'register' ? '注册新用户' : '用户登录'}}
          <!-- {{ $t('login.title') }}{{website.title}}
          <top-lang></top-lang> -->
        </h4>
        <userLogin v-if="activeName==='user'"></userLogin>
        <codeLogin v-else-if="activeName==='code'"></codeLogin>
        <thirdLogin v-else-if="activeName==='third'"></thirdLogin>
        <register v-else-if="activeName==='register'"></register>
        <div class="login-menu">
          <a href="#" @click.stop="activeName='user'">用户登录</a>
          <!--<a href="#" @click.stop="activeName='code'">{{ $t('login.phoneLogin') }}</a>-->
          <!--            <a href="#" @click.stop="activeName='third'">{{ $t('login.thirdLogin') }}</a>
                      <a :href="website.ssoUrl + website.redirectUri">{{ $t('login.ssoLogin') }}</a>-->
          <a href="#" @click.stop="activeName='register'">注册新用户</a>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
import userLogin from "./userlogin";
import codeLogin from "./codelogin";
import thirdLogin from "./thirdlogin";
import {mapGetters} from "vuex";
import {dateFormat} from "@/util/date";
import {validatenull} from "@/util/validate";
import topLang from "@/page/index/top/top-lang";
import topColor from "@/page/index/top/top-color";
import {getQueryString, getTopUrl} from "@/util/util";
import Register from "@/page/login/register";

export default {
  name: "login",
  components: {
    Register,
    userLogin,
    codeLogin,
    thirdLogin,
    topLang,
    topColor
  },
  data() {
    return {
      time: "",
      activeName: "user",
      socialForm: {
        tenantId: "000000",
        source: "",
        code: "",
        state: "",
      }
    };
  },
  watch: {
    $route() {
      this.handleLogin();
    }
  },
  created() {
    this.handleLogin();
    this.getTime();
  },
  mounted() {
  },
  computed: {
    ...mapGetters(["website", "tagWel"])
  },
  props: [],
  methods: {
    getTime() {
      setInterval(() => {
        this.time = dateFormat(new Date());
      }, 1000);
    },
    handleLogin() {
      const topUrl = getTopUrl();
      const redirectUrl = "/oauth/redirect/";
      const ssoCode = "?code=";
      this.socialForm.source = getQueryString("source");
      this.socialForm.code = getQueryString("code");
      this.socialForm.state = getQueryString("state");
      if (validatenull(this.socialForm.source) && topUrl.includes(redirectUrl)) {
        let source = topUrl.split("?")[0];
        source = source.split(redirectUrl)[1];
        this.socialForm.source = source;
      }
      if (topUrl.includes(redirectUrl) && !validatenull(this.socialForm.source) && !validatenull(this.socialForm.code) && !validatenull(this.socialForm.state)) {
        const loading = this.$loading({
          lock: true,
          text: '第三方系统登录中,请稍后。。。',
          spinner: "el-icon-loading"
        });
        this.$store.dispatch("LoginBySocial", this.socialForm).then(() => {
          window.location.href = topUrl.split(redirectUrl)[0];
          this.$router.push({path: this.tagWel.value});
          loading.close();
        }).catch(() => {
          loading.close();
        });
      } else if (!topUrl.includes(redirectUrl) && !validatenull(this.socialForm.code) && !validatenull(this.socialForm.state)) {
        const loading = this.$loading({
          lock: true,
          text: '单点系统登录中,请稍后。。。',
          spinner: "el-icon-loading"
        });
        this.$store.dispatch("LoginBySso", this.socialForm).then(() => {
          window.location.href = topUrl.split(ssoCode)[0];
          this.$router.push({path: this.tagWel.value});
          loading.close();
        }).catch(() => {
          loading.close();
        });
      }
    }
  }
};
</script>

<style lang="scss">
@import "@/styles/login.scss";
.new-login-page {
  width: 100%;
  margin: 0;
  padding: 0;
  //background-image: url("/img/bg/login-bg.png");
  display: flex;
  flex-direction: row;
  align-items: center;
  height: 100vh;
  overflow: hidden;
  .left {
    background-image: url("/img/bg/login-new-left2.png");
    background-size: cover;
    background-position: center;
    width: 65%;
    height: 100vh;
    position: relative;
    .title {
      position: absolute;
      top: 15%;
      left: calc(50% - 6em);
      color: white;
      font-size: 56px;
      font-weight: bolder;
      text-shadow: 2px ;
    }
  }
  .right {
    width: 35%;
    min-width: 640px;
    flex-grow: 1;
    .logo-n-title {
      padding-bottom: 64px;
    }
  }
}
</style>
